﻿using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;
using Eventos;

namespace PConexion
{
    public class ConexionCliente : Conexion
    {
        
        public override bool AbrirConexion(string ipServidor, int puertoServidor)
        {
            bool retorno = false;
            try
            {
                string endPoint = ConfigurationManager.AppSettings["IP_ENDPOINT"];

                IPEndPoint endpointCliente = new IPEndPoint(IPAddress.Parse(endPoint), 0);//Pasamos 0 y dejamos que el SO proporcione un puerto a su criterio
                IPEndPoint endpointServidor = new IPEndPoint(IPAddress.Parse(ipServidor), puertoServidor);

                this.SocketConexion = new Socket(AddressFamily.InterNetwork,
                                            SocketType.Stream,
                                            ProtocolType.Tcp);
                SocketConexion.Bind(endpointCliente);
                SocketConexion.Connect(endpointServidor);

                retorno = true;
            }
            catch (SocketException ex)
            {
                Console.WriteLine("Conexion:ConexionCliente.AbrirConexion: Se produjo un error al abrir la conexion.");
                retorno = false;
            }
            return retorno;
        }

        public override void RegistrarConexionEnServidor(Evento evento)
        {
            using (Manejador manejadorEvento = new Manejador())
            {
                if (!manejadorEvento.EnviarEventoMOM(this.IPServidorNotificacion, this.NombreNotificacion, evento))
                {
                    Console.WriteLine("Conexion:RegistrarConexionEnServidorActividad: No se pudo registrar el evento.");
                }
            }

            
            
        }
    }
}
